#include<iostream>
#include<vector>
#include<cstdlib>
#include<algorithm>
using namespace std;


class Solution {
public:
    bool is_reverse(string S) //判断回文
    {
        int i = 0;
        int j = S.size() - 1;
        while (i < j) {
            if (S[i] != S[j]) 
            {
                return false;
            }
            i++;
            j--;
        }
        return true;
    }
    int getLongestPalindrome(string S) 
    {
        string res="";
        int start = 0;
        string temp = "";
        for (int i = 0; i < S.size(); i++) {
            start = max(0, (int)(i - res.size() - 1)); // i - res.size() - 1 这种类型算出来的不是整型
            temp = S.substr(start,i-start+1); //注意要加1，因为0~10之间有11个数，而不是10-0=10个数

            if (is_reverse(temp)) 
            {
                res = temp;
            }
            else {
                temp = temp.substr(1, temp.size() - 1); //因为有偶数回文与奇数回文之分，偶数时不是回文，但减去一个字符后可能就会成为回文
                if (is_reverse(temp))
                {
                    res = temp;
                }
            }
        }
        return res.size();
    }
};

int main() {
    string s = "ababc";
    Solution s1;
    int res = s1.getLongestPalindrome(s);
    cout << res << endl;
    system("pause");
    return 0;
}


